思路:
根据键盘的unicode值来判断是键盘上的哪个键
通过定位利用键盘事件改编方块的top和left值
通过开启定时器消除长按键盘的首次卡顿情况
html
<div><div>
css
div{
width:100px;
height:100px;
position:absolute;
background:red;
}
js代码
window.onload=function(){
var div=document.querySelector('div');
var toLeft=toRight=toTop=toBottom=false;//设置方向变量,后面需要用作判断
var step=5;//设置移动的步进
//开启一个定时器
var timer=setInterval(function(){
//根据方向变量进行判断
if(toLeft){
div.style.left=div.offsetLeft-step+'px';
}
if(toRight){
div.style.left=div.offsetLeft+step+'px';
}
if(toTop){
div.style.top=div.offsetTop-step+'px';
}
if(toBottom){
div.style.top=div.offsetTop+step+'px';
}
},30);
//按下方向键时
document.onkeydown=function(ev){
console.log(ev.keyCode);//检查方向的unicode
//左:37 上:38 右:39 下:40
//用switch语句来判断按下了哪个方向键
switch(ev.keyCode){
case 37:toLeft=true;break;
case 38:toTop=true;break;
case 39:toRight=true;break;
case 40:toBottom=true;break;
}
}
//松开按键时
document.onkeyup=function(ev){
//还原对应松开的值
switch(ev.keyCode){
case 37:toLeft=false;break;
case 38:toTop=false;break;
case 39:toRight=false;break;
case 40:toBottom=false;break;
}
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。